CC = gcc

CFLAGS	= -std=c11 -Wall -Wextra -Wpedantic -Werror -g # 使用 C11 标准 启用所有警告 生成调试信息
LDFLAGS = -Wl,--as-needed -Wl,--no-undefined   # 仅链接实际需要的库 禁止未定义符号

OUTPUT_DIR = .

SRCS	= main.c functions.c 
OBJS	= $(SRCS:.c=.o) # 定义源文件列表 SRCS 和对应的目标文件列表 OBJS（通过替换 .c 为 .o 得到
TARGET	= $(OUTPUT_DIR)/exercise-01 #定义最终生成的可执行文件路径

all: $(TARGET) #默认目标是生成最终的可执行文件 $(TARGET)

$(OUTPUT_DIR):  
	mkdir -p $(OUTPUT_DIR)

$(TARGET): $(OBJS) | $(OUTPUT_DIR) # 链接目标文件生成可执行文件
	$(CC) $(LDFLAGS) -o $@ $^


main.o: main.c functions.h
	$(CC) $(CFLAGS) -c $< -o $@

functions.o: functions.c functions.h
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -f $(TARGET) $(OBJS)
